import axios from 'axios';

// const BASE_URL = 'http://localhost:3001';
const TIMEOUT = 5000;

const request = axios.create({
  // baseURL: BASE_URL,
  timeout: TIMEOUT
});

// 请求拦截器: 在发起http请求之前的一些操作
//   1、发送请求之前, 加载一些组件
//   2、某些请求需要携带token, 如果说没有没有携带, 直接跳转到登录页面
request.interceptors.request.use((config: any) => {
  console.log('请求前:', config)
  // 非登录接口都需要给接口添加上 token/Authorization
  if(config.url !== '/login') {
    // 获取设置token
    // config.headers.token = window.sessionStorage.getItem('token');
    // config.headers.Authorization = window.sessionStorage.getItem('token');
    config.headers.Authorization = 'cgevgcvgvgvgv';
  }
  return config;
}, (err: any) => {
  return err;
});

// 响应拦截器: 在http请求之后的一些操作
request.interceptors.response.use((res: any) => {
  console.log('请求后:', res)

  // 是登录接口并且响应成功时写入token
  if(res.config?.url === '/login' && res.status === 200) {
    window.sessionStorage.setItem ('token', res.data?.token);
  }
  return res;
}, (err: any) => {
  if (err && err.response) {
      switch(err.response.status) {
        case 400:
          console.log('请求错误')
          break
        case 401:
          console.log('未认证')
          break
        default:
          console.log('其他信息错误')
      }
  }
})

export default request;
